﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Solution.Utilities
{
    public class ConvertUtility
    {

        /// <summary>
        /// Chuyển một đối tượng về kiểu int. Nếu có lỗi
        /// tức là không chuyển được, trả về giá trị def
        /// </summary>
        /// <param name="val">Đối tượng cần chuyển đổi</param>
        /// <param name="def">Giá trị mặc định</param>
        /// <returns>Int value</returns>
        public static float ToFloat(object val)
        {
            try
            {
                return Convert.ToSingle(val);
            }
            catch
            {

                throw;
            }
        }
        public static int ToInt(object val, int def)
        {
            try
            {
                return Convert.ToInt32(val);
            }
            catch
            {
                return def;
            }
        }

        // Đổi một đối tượng sang giá trị int
        // Nếu không chuyển được, trả về giá trị 0
        public static int ToInt(object val)
        {
            return ToInt(val, 0);
        }


        public static long ToLong(object val, long def)
        {
            try
            {
                return Convert.ToInt64(val);
            }
            catch
            {
                return def;
            }
        }

        public static long ToLong(object val)
        {
            return ToLong(val, 0);
        }

        public static short ToShort(object val, short def)
        {
            try
            {
                return Convert.ToInt16(val);
            }
            catch
            {
                return def;
            }
        }

        public static short ToShort(object val)
        {
            return ToShort(val, 0);
        }

        public static string ToString(object val, string def)
        {
            try
            {
                return Convert.ToString(val);
            }
            catch
            {
                return def;
            }
        }

        public static char ToChar(object val)
        {
            return ToChar(val, ' ');
        }
        public static char ToChar(object val, char def)
        {
            try
            {
                return Convert.ToChar(val);
            }
            catch
            {
                return def;
            }
        }

        public static string ToString(object val)
        {
            return ToString(val, "");
        }

        public static bool ToBoolean(object val, bool def)
        {
            try
            {
                return Convert.ToBoolean(val);
            }
            catch
            {
                return def;
            }
        }

        public static bool ToBoolean(object val)
        {
            return ToBoolean(val, false);
        }

        public static DateTime ToDateTime(object val, DateTime def)
        {
            try
            {
                return Convert.ToDateTime(val);
            }
            catch
            {
                return def;
            }
        }

        public static DateTime ToDateTime(object val)
        {
            return ToDateTime(val, DateTime.MinValue);
        }

    }
}
